package com.castile.sdk.nifi.client.api;

import com.castile.sdk.nifi.client.config.NiFiConfig;
import org.apache.nifi.api.toolkit.api.*;

/**
 * @author castile
 * @date 2025-05-12 下午11:51
 */
public interface NiFiClientService {

    FlowApi getFlowApi();

    AccessApi  getAccessApi();
    ControllerApi getControllerApi();
    ControllerServicesApi getControllerServicesApi();
    CountersApi getCountersApi();
    ParameterContextsApi getParameterContextsApi();
    SystemDiagnosticsApi  getSystemDiagnosticsApi();
    ProcessorsApi  getProcessorsApi();
    ProcessGroupsApi getProcessGroupsApi();
    ResourcesApi getResourcesApi();
    ReportingTasksApi getReportingTasksApi();

//    ControllerClient getControllerClient();
//
//
//// ----- ControllerServicesClient -----
//    ControllerServicesClient getControllerServicesClient();

    /**
     * The builder interface that implementations should provide for obtaining the
     * client.
     */
    interface Builder {

        NiFiClientService.Builder config(NiFiConfig clientConfig);

        NiFiConfig getConfig();

        NiFiClientService build();

    }
}
